package com.yssoft.controller.supervise;

import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSONObject;
import com.yssoft.controller.BaseController;
import com.yssoft.service.supervise.FlowQueryService;
import com.yssoft.service.supervise.PurchaseStatisticsService;

/**
 * @类名称: FlowQueryController
 * @类描述: 流向查询控制器
 * @作者:洪丰
 * @创建时间:2018年6月13日 下午4:23:42
 */
@Controller
@RequestMapping(value = "/flowQuery")
public class FlowQueryController extends BaseController
{
	@Autowired
	private PurchaseStatisticsService purchaseStatisticsService;
    @Resource
    private FlowQueryService flowQueryService;
    
    
	/**
	 * @方法名称: list
	 * @功能描述: 跳转到流向查询页面
	 * @作者: 洪丰
	 * @创建时间:2018年6月14日 上午8:38:37
	 * @param model
	 * @return String
	 */
	@RequestMapping(value = "/list")
	public String list(Model model){
		return "supervise/flowQuery/traceabilityQueryList";
	}
	
	/**
	 * @方法名称: findProductPage
	 * @功能描述: 获取采购统计列表页
	 * @作者: 洪丰
	 * @创建时间:2018年6月8日 下午3:56:40
	 * @param page
	 * @param limit
	 * @param productName
	 * @return JSONObject
	 */
	@RequestMapping("/findPage")
    @ResponseBody
    public JSONObject findPage(@RequestParam(name = "page",defaultValue = "0") int page 
    		, @RequestParam(name = "limit",defaultValue = "10") int limit, String purchaseDate
    		, String entIds, Integer areaId, String mClassily, String sName){
        JSONObject jsonObject = purchaseStatisticsService.queryPage(page, limit, purchaseDate
        		, entIds, areaId, mClassily, sName);
        return jsonObject;
    }
	
	/**
	 * @方法名称: toFlowInfo
	 * @功能描述: 跳转到流向信息页面
	 * @作者: 洪丰
	 * @创建时间:2018年6月14日 上午8:44:10
	 * @param model
	 * @param worksheetId
	 * @return String
	 */
	@RequestMapping(value = "/toFlowInfo")
	public String toFlowInfo(Model model, Integer batchId, Integer proId, String worksheetDate, Integer worksheetId){
		Map<String, Object> purMap = flowQueryService.queryPurInfo(batchId);
        // 使用产品ID重算配料，确保与产品信息中的“已添加物料”一致（排除包材）
        if (proId != null) {
            Map<String, String> ing = flowQueryService.queryIngredientsByProId(proId);
            if (ing != null) {
                purMap.put("mName", ing.get("mName"));
                purMap.put("sName", ing.get("sName"));
            }
        }
        model.addAttribute("purMap", purMap);
        List<Map<String, Object>> worksheetList = flowQueryService.queryWorksheetList(batchId, proId, worksheetDate, worksheetId);
        model.addAttribute("worksheetList", worksheetList);
		return "supervise/flowQuery/flowQueryInfo";
	}
	
	/**
	 * @方法名称: findFlowInfo
	 * @功能描述: 通过个体码查询信息
	 * @作者: 洪丰
	 * @创建时间:2018年6月14日 下午7:00:28
	 * @param model
	 * @param labelCode
	 * @return String
	 */
	@RequestMapping(value = "/findFlowInfo", method = RequestMethod.GET)
	public String findFlowInfo(Model model, String labelCode){
		Map<String, Object> infoMap = flowQueryService.queryFlowMap(labelCode);
        model.addAttribute("infoMap", infoMap);
		return "supervise/flowQuery/labelFlowQueryInfo";
	}
	
	/**
	 * @方法名称: assBatch
	 * @功能描述: 联想查询批次号
	 * @作者: 洪丰
	 * @创建时间:2018年6月15日 下午1:10:31
	 * @param model
	 * @param proId
	 * @param batchCode
	 * @return String
	 */
	@RequestMapping(value = "/assBatch", method = RequestMethod.GET)
	public String assBatch(Model model, String proId, String batchCode){
		List<Map<String, Object>> batchList = flowQueryService.queryBatchByProId(proId, batchCode);
        model.addAttribute("batchList", batchList);
		return "supervise/flowQuery/assBatchDialog";
	}
	
	/**
	 * @方法名称: findPurchaseDate
	 * @功能描述: 通过批次id获取加工单加工时间
	 * @作者: 洪丰
	 * @创建时间:2018年6月15日 下午1:36:50
	 * @param batchId
	 * @return JSONObject
	 */
	@RequestMapping("/findPurchaseDate")
    @ResponseBody
    public JSONObject findPurchaseDate(Integer batchId){
        JSONObject jsonObject = flowQueryService.queryPurchaseDate(batchId);
        return jsonObject;
    }
    
	/**
	 * @方法名称: findAllPurchaseDate
	 * @功能描述: 查询所有生产日期
	 * @作者: 系统
	 * @创建时间:2025年
	 * @return JSONObject
	 */
	@RequestMapping("/findAllPurchaseDate")
    @ResponseBody
    public JSONObject findAllPurchaseDate(){
        JSONObject jsonObject = flowQueryService.queryAllPurchaseDate();
        return jsonObject;
    }
	
	/**
	 * @方法名称: toBatchList
	 * @功能描述: 跳转到批次选择页面
	 * @作者: 洪丰
	 * @创建时间:2018年6月15日 下午2:46:58
	 * @param model
	 * @param batchId
	 * @return String
	 */
	@RequestMapping(value = "/toBatchList", method = RequestMethod.GET)
	public String toBatchList(Model model, Integer proId){
		model.addAttribute("proId", proId);
		return "supervise/flowQuery/batchListDialog";
	}
	
	/**
	 * @方法名称: findBatchList
	 * @功能描述: 根据产品id获取批次列表
	 * @作者: 洪丰
	 * @创建时间:2018年6月15日 下午2:52:41
	 * @param proId
	 * @return JSONObject
	 */
	@RequestMapping("/findBatchList")
    @ResponseBody
    public JSONObject findBatchList(@RequestParam(name = "page",defaultValue = "0") int page 
    		, @RequestParam(name = "limit",defaultValue = "10") int limit, Integer proId){
        JSONObject jsonObject = flowQueryService.querybatchList(page, limit, proId);
        return jsonObject;
    }
}
